#ifndef _LOGIC_STATEMACHINE_RIBBONLETURNLAMPSTATE_H_
#define _LOGIC_STATEMACHINE_RIBBONLETURNLAMPSTATE_H_

#include "StateMachineState.h"

typedef struct RibbonLeTurnLampStateMachine_Free
{
    StateMachineBase sm_;
}RibbonLeTurnLampStateMachine_Free;
extern void RibbonLeTurnLampStateMachineFreeEntry(void);
extern void RibbonLeTurnLampStateMachineFreeExcute(void);
extern void RibbonLeTurnLampStateMachineFreeExit(void);

typedef struct RibbonLeTurnLampStateMachine_Flicker
{
    StateMachineBase sm_;
}RibbonLeTurnLampStateMachine_Flicker;
extern void RibbonLeTurnLampStateMachineFlickerEntry(void);
extern void RibbonLeTurnLampStateMachineFlickerExcute(void);
extern void RibbonLeTurnLampStateMachineFlickerExit(void);

typedef struct RibbonLeTurnLampStateMachine_Flow
{
    StateMachineBase sm_;
}RibbonLeTurnLampStateMachine_Flow;
extern void RibbonLeTurnLampStateMachineFlowEntry(void);
extern void RibbonLeTurnLampStateMachineFlowExcute(void);
extern void RibbonLeTurnLampStateMachineFlowExit(void);

typedef struct RibbonLeTurnLampStateMachine
{
    RibbonLeTurnLampStateMachine_Free    ribbonLeTurnLampStateMachineFree_;
    RibbonLeTurnLampStateMachine_Flicker ribbonLeTurnLampStateMachineFlicker_;
    RibbonLeTurnLampStateMachine_Flow    ribbonLeTurnLampStateMachineFlow_;

    StateMachineBase sm_;
} RibbonLeTurnLampStateMachine;
extern void RibbonLeTurnStateMachineEntry(void);
extern void RibbonLeTurnStateMachineExcute(void);
extern void RibbonLeTurnStateMachineExit(void);

extern RibbonLeTurnLampStateMachine g_RibbonLeTurnLampStateMachine;
extern void InitRibbonLeTurnLampStateMachine(void);

#endif
